<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <my-content></my-content>
    <my-footer></my-footer>
  </div>
</body>
<script src="lib/vue.js"></script>
<template id="content">
  <div>
    {{ text }}
  </div>
</template>
<template id="footer">
  <ul>
    <li @click="changePage('首页')">首页</li>
    <li @click="changePage('分类')">分类</li>
    <li @click="changePage('购物车')">购物车</li>
    <li @click="changePage('我的')">我的</li>
  </ul>
</template>
<script>
  // 中央事件总线
  // 实例化新的vue作为中央事件总线 bus
  // 在需要获取数据的地方，通过 bus.$on(自定义事件名, 回调函数) 接收数据，
  // 回调函数的默认参数就是传递的值
  // 在发送数据的地方，通过 bus.$emit(自定义事件名，传递的参数) 发送数据即可
  const eventBus = new Vue()
  const Content = {
    template: '#content',
    data () {
      return {
        text: '首页'
      }
    },
    mounted () {
      // 接收数据 ---- 监听
      eventBus.$on('footer-content', (data) => {
        this.text = data
      })
    }
  }
  const Footer = {
    template: '#footer',
    methods: {
      changePage (text) {
        // 发送数据
        eventBus.$emit('footer-content', text)
      }
    }
  }
  new Vue({
    el: '#app',
    components: {
      'my-content': Content,
      'my-footer': Footer
    }
  })
</script>
</html>